﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Utility
{
    public class WriteLog 
    {
        /**/
        /// <summary>
        /// 写入日志文件
        /// </summary>
        /// <param name="input"></param>
        public static void WriteLogFile(string input)
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory + "Log\\" + System.DateTime.Now.ToLongDateString();
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }

                /**/
                ///指定日志文件的目录
                string fname = path + "\\LogFile.txt";

                FileInfo finfo = new FileInfo(fname);

                if (!finfo.Exists)
                {
                    FileStream fs;
                    fs = File.Create(fname);
                    fs.Close();
                    finfo = new FileInfo(fname);
                }

                /**/
                ///判断文件是否存在以及是否大于2K
                if (finfo.Length > 1024 * 1024 * 8)
                {
                    /**/
                    ///文件超过8MB则重命名
                    File.Move(path + "\\LogFile.txt", path + "\\" + System.DateTime.Now.Hour + System.DateTime.Now.Minute + ".txt");
                    /**/
                    ///删除该文件
                    //finfo.Delete();
                }
                //finfo.AppendText();
                /**/
                ///创建只写文件流

                using (FileStream fs = finfo.OpenWrite())
                {
                    /**/
                    ///根据上面创建的文件流创建写数据流
                    StreamWriter w = new StreamWriter(fs);

                    /**/
                    ///设置写数据流的起始位置为文件流的末尾
                    w.BaseStream.Seek(0, SeekOrigin.End);

                    /**/
                    ///写入“Log Entry : ”
                    w.Write("\n\rLog Entry : ");

                    /**/
                    ///写入当前系统时间并换行
                    w.Write("{0} {1} \n\r", DateTime.Now.ToLongTimeString(),
                        DateTime.Now.ToLongDateString());

                    /**/
                    ///写入日志内容并换行
                    w.Write(input + "\n\r");

                    /**/
                    ///写入------------------------------------“并换行
                    w.Write("------------------------------------\n\r");

                    /**/
                    ///清空缓冲区内容，并把缓冲区内容写入基础流
                    w.Flush();

                    /**/
                    ///关闭写数据流
                    w.Close();
                }
            }
            catch(Exception ex)
            { 
            }
        }

        /**/
        /// <summary>
        /// 写入异常日志文件
        /// </summary>
        /// <param name="input"></param>
        public static void WriteExceptionFile(string input)
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory + "ExceptionLog\\" + System.DateTime.Now.ToLongDateString();
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                /**/
                ///指定日志文件的目录
                string fname = path + "\\LogFile.txt";

                FileInfo finfo = new FileInfo(fname);

                if (!finfo.Exists)
                {
                    FileStream fs;
                    fs = File.Create(fname);
                    fs.Close();
                    finfo = new FileInfo(fname);
                }

                /**/
                ///判断文件是否存在以及是否大于2K
                if (finfo.Length > 1024 * 1024 * 8)
                {
                    /**/
                    ///文件超过8MB则重命名
                    File.Move(path + "\\LogFile.txt", path + "\\" + System.DateTime.Now.Hour + System.DateTime.Now.Minute + ".txt");
                    /**/
                    ///删除该文件
                    //finfo.Delete();
                }
                //finfo.AppendText();
                /**/
                ///创建只写文件流

                using (FileStream fs = finfo.OpenWrite())
                {
                    /**/
                    ///根据上面创建的文件流创建写数据流
                    StreamWriter w = new StreamWriter(fs);

                    /**/
                    ///设置写数据流的起始位置为文件流的末尾
                    w.BaseStream.Seek(0, SeekOrigin.End);

                    /**/
                    ///写入“Log Entry : ”
                    w.Write("\n\rLog Entry : ");

                    /**/
                    ///写入当前系统时间并换行
                    w.Write("{0} {1} \n\r", DateTime.Now.ToLongTimeString(),
                        DateTime.Now.ToLongDateString());

                    /**/
                    ///写入日志内容并换行
                    w.Write(input + "\n\r");

                    /**/
                    ///写入------------------------------------“并换行
                    w.Write("------------------------------------\n\r");

                    /**/
                    ///清空缓冲区内容，并把缓冲区内容写入基础流
                    w.Flush();

                    /**/
                    ///关闭写数据流
                    w.Close();
                }
            }
            catch (Exception ex)
            { }
        }

        /// <summary>
        /// 写对账文件
        /// </summary>
        /// <param name="input">内容</param>
        /// <param name="fileName">文件名称</param>
        public static void WriteAcountFile(string input, string fileName)
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory + "AccountLog\\" + System.DateTime.Now.ToLongDateString();
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                /**/
                ///指定日志文件的目录
                string fname = path + "\\" + fileName + ".txt";//fileName;//

                FileInfo finfo = new FileInfo(fname);

                if (!finfo.Exists)
                {
                    FileStream fs;
                    fs = File.Create(fname);
                    fs.Close();
                    finfo = new FileInfo(fname);
                }

                using (FileStream fs = finfo.OpenWrite())
                {
                    /**/
                    ///根据上面创建的文件流创建写数据流
                    StreamWriter w = new StreamWriter(fs);

                    /**/
                    ///设置写数据流的起始位置为文件流的末尾
                    w.BaseStream.Seek(0, SeekOrigin.End);


                    ///写入日志内容并换行
                    w.WriteLine(input);


                    /**/
                    ///清空缓冲区内容，并把缓冲区内容写入基础流
                    w.Flush();

                    /**/
                    ///关闭写数据流
                    w.Close();
                }
            }
            catch(Exception ex)
            { }
        }
    }
}
